Report unexpected character data as error from the GMarkup parser,
authorMatthias Clasen <maclas@gmx.de>
Wed, 17 Sep 2003 19:18:45 +0000 (19:18 +0000)
committerMatthias Clasen <matthiasc@src.gnome.org>
Wed, 17 Sep 2003 19:18:45 +0000 (19:18 +0000)
2003-09-17  Matthias Clasen  <maclas@gmx.de>

* gtk/gtkuimanager.c (text_handler): Report unexpected character
data as error from the GMarkup parser, otherwise things like
gtk_ui_manager_add_ui_from_string (ui, "Hi there!", -1, &error)
pass unexpectedly.

ChangeLog
ChangeLog.pre-2-10
ChangeLog.pre-2-4
ChangeLog.pre-2-6
ChangeLog.pre-2-8
gtk/gtkuimanager.c

index 39a7bf2af95134dcffdf10fbf9cc996f83974298..4aa690e8745b013231dbad2c5aafc7cdd6f14bfc 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,10 @@
+2003-09-17  Matthias Clasen  <maclas@gmx.de>
+
+       * gtk/gtkuimanager.c (text_handler): Report unexpected character
+       data as error from the GMarkup parser, otherwise things like
+       gtk_ui_manager_add_ui_from_string (ui, "Hi there!", -1, &error) 
+       pass unexpectedly.
+
 Wed Sep 17 02:38:53 2003  Soeren Sandmann  <sandmann@daimi.au.dk>
 
        * gtk/gtktoolbar.c (gtk_toolbar_class_init): revert accidentally
index 39a7bf2af95134dcffdf10fbf9cc996f83974298..4aa690e8745b013231dbad2c5aafc7cdd6f14bfc 100644 (file)
@@ -1,3 +1,10 @@
+2003-09-17  Matthias Clasen  <maclas@gmx.de>
+
+       * gtk/gtkuimanager.c (text_handler): Report unexpected character
+       data as error from the GMarkup parser, otherwise things like
+       gtk_ui_manager_add_ui_from_string (ui, "Hi there!", -1, &error) 
+       pass unexpectedly.
+
 Wed Sep 17 02:38:53 2003  Soeren Sandmann  <sandmann@daimi.au.dk>
 
        * gtk/gtktoolbar.c (gtk_toolbar_class_init): revert accidentally
index 39a7bf2af95134dcffdf10fbf9cc996f83974298..4aa690e8745b013231dbad2c5aafc7cdd6f14bfc 100644 (file)
@@ -1,3 +1,10 @@
+2003-09-17  Matthias Clasen  <maclas@gmx.de>
+
+       * gtk/gtkuimanager.c (text_handler): Report unexpected character
+       data as error from the GMarkup parser, otherwise things like
+       gtk_ui_manager_add_ui_from_string (ui, "Hi there!", -1, &error) 
+       pass unexpectedly.
+
 Wed Sep 17 02:38:53 2003  Soeren Sandmann  <sandmann@daimi.au.dk>
 
        * gtk/gtktoolbar.c (gtk_toolbar_class_init): revert accidentally
index 39a7bf2af95134dcffdf10fbf9cc996f83974298..4aa690e8745b013231dbad2c5aafc7cdd6f14bfc 100644 (file)
@@ -1,3 +1,10 @@
+2003-09-17  Matthias Clasen  <maclas@gmx.de>
+
+       * gtk/gtkuimanager.c (text_handler): Report unexpected character
+       data as error from the GMarkup parser, otherwise things like
+       gtk_ui_manager_add_ui_from_string (ui, "Hi there!", -1, &error) 
+       pass unexpectedly.
+
 Wed Sep 17 02:38:53 2003  Soeren Sandmann  <sandmann@daimi.au.dk>
 
        * gtk/gtktoolbar.c (gtk_toolbar_class_init): revert accidentally
index 39a7bf2af95134dcffdf10fbf9cc996f83974298..4aa690e8745b013231dbad2c5aafc7cdd6f14bfc 100644 (file)
@@ -1,3 +1,10 @@
+2003-09-17  Matthias Clasen  <maclas@gmx.de>
+
+       * gtk/gtkuimanager.c (text_handler): Report unexpected character
+       data as error from the GMarkup parser, otherwise things like
+       gtk_ui_manager_add_ui_from_string (ui, "Hi there!", -1, &error) 
+       pass unexpectedly.
+
 Wed Sep 17 02:38:53 2003  Soeren Sandmann  <sandmann@daimi.au.dk>
 
        * gtk/gtktoolbar.c (gtk_toolbar_class_init): revert accidentally
index c36beeeb25654001f173661386ff5a1dabdb3a31..0cd712e8e00f73222fa2aa859605458da45c0892 100644 (file)
@@ -1087,21 +1087,51 @@ cleanup (GMarkupParseContext *context,
   gtk_ui_manager_remove_ui (ctx->self, ctx->merge_id);
 }
 
+static gboolean
+xml_isspace (char c)
+{
+  return c == ' ' || c == '\t' || c == '\n' || c == '\r';
+}
+
+static void 
+text_handler (GMarkupParseContext *context,
+             const gchar         *text,
+             gsize                text_len,  
+             gpointer             user_data,
+             GError             **error)
+{
+  const gchar *p;
+  const gchar *end;
+
+  p = text;
+  end = text + text_len;
+  while (p != end && xml_isspace (*p))
+    ++p;
+  
+  if (p != end)
+    {
+      gint line_number, char_number;
+      
+      g_markup_parse_context_get_position (context,
+                                          &line_number, &char_number);
+      g_set_error (error,
+                  G_MARKUP_ERROR,
+                  G_MARKUP_ERROR_INVALID_CONTENT,
+                  _("Unexpected character data on line %d char %d"),
+                  line_number, char_number);
+    }
+}
+
+
 static GMarkupParser ui_parser = {
   start_element_handler,
   end_element_handler,
-  NULL,
+  text_handler,
   NULL,
   cleanup
 };
 
 
-static gboolean
-xml_isspace (char c)
-{
-  return c == ' ' || c == '\t' || c == '\n' || c == '\r';
-}
-
 static guint
 add_ui_from_string (GtkUIManager *self,
                    const gchar  *buffer,